package abd.pr1.Interface;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import com.toedter.calendar.JYearChooser;

import abd.pr1.Models.Genero;
import abd.pr1.Models.Serie;

public class NuevaSerieWindow extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JPanel contentPane;
	private JTextField nombre;
	private JTextArea titular;
	private JList<Genero> generosList;
	private JTextArea sinopsisText;
	private JYearChooser estreno;
	private JYearChooser finalizacion;
	private JButton guardar;
	private JButton cerrar;
	
	public NuevaSerieWindow(){
		super();
		this.build();
		this.setSize(640, 620);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}

	private void build(){
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		this.getContentPane().setLayout(new BorderLayout());
		JLabel nombreLabel = new JLabel("Nombre:");
		nombre = new JTextField();
	    JLabel titularLabel = new JLabel("Titular:");
	    titular = new JTextArea();
		
	    JLabel generosLabel = new JLabel("Genero");
	    generosList= new JList<Genero>();
		
		JLabel sinopsisLabel = new JLabel("Sinopsis");
		
	    sinopsisText = new JTextArea();
		
		 guardar = new JButton("Guardar");
		 guardar.setActionCommand("guardar_serie");
		 
		 cerrar = new JButton("Cerrar");
		 cerrar.setActionCommand("cerrar_serie");
		
		
		
		
		JPanel datosSerie = new JPanel();
		datosSerie.setLayout(new BoxLayout(datosSerie, BoxLayout.Y_AXIS));
		
		JPanel generos= new JPanel();
		
		generos.add(generosLabel);
		generos.add(generosList);
		
		datosSerie.add(nombreLabel);
		datosSerie.add(nombre);
		datosSerie.add(titularLabel);
		datosSerie.add(titular);
		datosSerie.add(generos);
		
		datosSerie.add(sinopsisLabel);
		datosSerie.add(sinopsisText);
		
		JPanel fechas= new JPanel();
		
		estreno = new JYearChooser();
		finalizacion= new JYearChooser();
		
		JLabel estrenoLabel= new JLabel("Estreno:");
		JLabel finalizacionLabel= new JLabel("Finalización:");
		
		fechas.add(estrenoLabel);
		fechas.add(estreno);
		fechas.add(finalizacionLabel);
		fechas.add(finalizacion);
		datosSerie.add(fechas);
		
		
		
		JPanel botones = new JPanel();
		botones.add(guardar);
		botones.add(cerrar);
		
		this.getContentPane().add(datosSerie,BorderLayout.CENTER);
		this.getContentPane().add(botones,BorderLayout.SOUTH);
		
	}
	
	public void addListener(ActionListener a){
		cerrar.addActionListener(a);
		guardar.addActionListener(a);
	}
	public String getNombreTexto(){
		return this.nombre.getText();
	}
	public String getTitularTexto(){
		return this.titular.getText();
	}
	public String getSinopsisTexto(){
		return this.sinopsisText.getText();
	}
	
	public int getEstreno(){
		return this.estreno.getValue();
	}
	
	public int getFinalizacion(){
		return this.finalizacion.getValue();
	}
	
	public List<Genero> getGeneroList(){
		return this.generosList.getSelectedValuesList();
	}
	
	public void setNombreTexto(String nombreText){
		nombre.setText(nombreText);
	}
	public void setTitularTexto(String titularText){
		titular.setText(titularText);
	}
	public void setSinopsisTexto(String sinopsisTexto){
		sinopsisText.setText(sinopsisTexto);
	}
	public void setGeneroList(List<Genero> genero){
		generosList.setListData(genero.toArray(new Genero[genero.size()]));
	}
	
	public void setEstreno(int estreno){
		this.estreno.setYear(estreno);
	}
	
	public void setFinalizacion(int finalizacion){
		this.finalizacion.setYear(finalizacion);
	}
	
	public void setSelectedGeneroList(List<Genero> generos){
		//generosList.setListData(genero.toArray(new Genero[genero.size()]));
		int[] selected = new int[generos.size()]; 

		int mark=0;
		for (int i = 0; i < generosList.getModel().getSize(); i++) {
			for (int j = 0; j < generos.size(); j++) {
				if(generosList.getModel().getElementAt(i).getId().equals(generos.get(j).getId())){
					selected[mark]=i;
					mark++;
				}
			}
		}
		if(selected.length>0){
			generosList.setSelectedIndices(selected);
		}
	}
}
